package com.buss.product.dao;

import com.buss.core.dic.RecordStatus;
import com.buss.core.persistence.OrderBy;
import com.buss.core.persistence.Paginalbe;
import com.buss.core.persistence.ResultList;
import com.buss.product.model.CateProp;
import com.buss.product.model.CateProp.PropEntryWay;
import com.buss.product.model.CateProp.PropSelectType;

public interface CatePropDao {

	/**
	 * 新增商品属性信息
	 * @param prop
	 * @return
	 */
	public CateProp saveProp(CateProp prop);
	
	/**
	 * 修改商品属性信息
	 * @param prop
	 */
	public void editProp(CateProp prop);
	
	/**
	 * 删除指定商品属性信息
	 * @param ids
	 */
	public void removeProp(Long[] ids);
	
	/**
	 * 获取指定商品属性信息
	 * @param id
	 * @return
	 */
	public CateProp loadProp(Long id);
	
	/**
	 * 获取指定商品属性信息
	 * @param companyId
	 * @param code
	 * @return
	 */
	public CateProp loadProp(String companyId,String code);
	
	/**
	 * 获取指定
	 * @param companyId
	 * @param code
	 * @return
	 */
	public Long getRowCount(String companyId,String code); 
	
	/**
	 * 获取商品属性信息列表
	 * @param groupId   所属属性分组ID
	 * @param code		属性编码
	 * @param name		属性名称
	 * @param isSearch	是否可搜索
	 * @param status	当前状态
	 * @param orderBy	排序属性
	 * @param page		分页控件
	 * @return
	 */
	public ResultList<CateProp> queryProp(Long groupId, String name,
			Boolean isSearch,RecordStatus status,OrderBy orderBy, Paginalbe page);
	
	/**
	 * 获取商品分组对应的属性信息
	 * @param groupIds
	 * @param status
	 * @param selectType
	 * @param entryWay
	 * @param orderBy
	 * @return
	 */
	public ResultList<CateProp> queryProp(Long[] groupIds,RecordStatus status,PropSelectType selectType,
			PropEntryWay entryWay,OrderBy orderBy);
}
